Airflow详细搭建过程(亲测 + 总结)

您所在的位置:网站首页 airflow web地址 Airflow详细搭建过程(亲测 + 总结)

Airflow详细搭建过程(亲测 + 总结)

2023-11-08 01:33| 来源: 网络整理| 查看: 265

Airflow详细搭建过程(亲测+总结)

官网:Apache airflow Airflow是社区创建的一个平台,用于以编程方式编写,安排和监视工作流。 半个月前搭了一次,现在做一个记录,不逼逼,开始搭建了,全程多图:

环境准备

系统: cent os 7 conda版本: 4.8.2 airflow版本 1.10.11

开始搭建

我这边会用一个conda创建一个apache airflow的环境:

conda create -n airflow_env python=3.7

切换到当前的这个环境:

conda activate airflow_env 搭建airflow

搭建airflow的话,官网有一套详细的文档Airflow 搭建 接下来就按照这个方式来

# airflow needs a home, ~/airflow is the default, # but you can lay foundation somewhere else if you prefer # (optional) export AIRFLOW_HOME=~/airflow # install from pypi using pip pip install apache-airflow # initialize the database airflow initdb # start the web server, default port is 8080 # airflow webserver -p 8080 这里做个修改,后面加上-D参数让它后台运行 airflow webserver -p 8080 -D # start the scheduler airflow scheduler # visit localhost:8080 in the browser and enable the example dag in the home page

经过上述的步骤的话,可以在浏览器中打开这个页面: 在这里插入图片描述 搭建到这里,可以看到一个基础的样子,但是从目前而言,我能发现的有以下几个问题:

airflow的元数据存储信息默认是使用sqlite进行存储。页面的右上角的时间是比正常的时间晚了8个小时的airflow默认是用单线程调度任务的,如下图(之后就知道了) 在这里插入图片描述 现在问题已经暴露了,那么就开始处理吧。 airflow的元数据存储默认用sqlite,现在切换为mysql

sqlite不支持多线程,所以我打算切换成mysql,mysql的安装可以参考:Linux centos安装mysql airflow中可选很多其它的选项,那么在airflow里面我们可以选择一些所需的组件,例如现在需要利用mysql存储airflow的相关信息,可选的功能列表在此处airlfow的其它选项 就需要pip install 'apache-airflow[mysql]' 这里,我就不挑了,直接来全套插件,这样就会遇到更多的坑:

yum install mysql-devel gcc gcc-devel python-devel krb5-devel.x86_64 cyrus-sasl-devel -y pip install 'apache-airflow[all]' -i https://pypi.tuna.tsinghua.edu.cn/simple/

这个时候可能会遇到很多的错误,例如下面的: 在这里插入图片描述 这里面的错误要有点耐心去处理一下,在这里面一般都是版本上的错误,将红字里面出现的版本卸载掉,重新指定版本号安装就好了。

配置airflow 配置mysql作为airflow的元数据信息的存储: vim /etc/my.cnf 在[mysqld]下面添加explicit_defaults_for_timestamp=1systemctl restart mysqld重启mysql在mysql中创建一个数据库,我这边的数据库的名字叫做airflow 在这里插入图片描述进入airflow的文件夹下,修改airflow.cfg。 在这里插入图片描述 解决airflow一次只能执行一个任务的问题: 在这里插入图片描述 相关的依据请参考airflow 执行者解决airflow时间晚了八个小时的问题 修改airflow.cfg的内容: 在这里插入图片描述 这部分的内容就要参考airflow 修改源码 具体的内容如下:#找到airflow的安装位置 find / -name airflow 在这里插入图片描述 修改/root/anaconda3/envs/airflow_env/lib/python3.7/site-packages/airflow/utils/timezone.py 在第27行下面添加: 在这里插入图片描述from airflow import configuration as conf try: tz = conf.get("core", "default_timezone") if tz == "system": utc = pendulum.local_timezone() else: utc = pendulum.timezone(tz) except Exception: pass 修改 utcnow() 函数: 在这里插入图片描述修改/root/anaconda3/envs/airflow_env/lib/python3.7/site-packages/airflow/utils/sqlalchemy.py 在第38行下面添加: utc = pendulum.timezone('UTC') from airflow import configuration as conf try: tz = conf.get("core", "default_timezone") if tz == "system": utc = pendulum.local_timezone() else: utc = pendulum.timezone(tz) except Exception: pass

在这里插入图片描述 注释掉这个: 在这里插入图片描述 3. 修改/root/anaconda3/envs/airflow_env/lib/python3.7/site-packages/airflow/www/templates/admin/master.html

修改下箭头所指的行,修改的内容在注释的下面在这里插入图片描述 此时修改完毕了,这个时候重启一下 airflow就好了。修改源码的操作参考:airflow 修改中国时区(改airflow源码)

最后的结果如下:

使用了mysql作为元数据信息的存储,在mysql里面可以看到: 在这里插入图片描述 登录airflow的时候: 在这里插入图片描述

解决了之前提到的三个问题 总结

这个airflow作为一个调度工具,这次只是提到了如何去安装搭建,以后有空的时候,我想补充一篇如何编写airlfow的任务脚本。现在的水平还只是简单的任务脚本的编写,还需要多多努力。 最后,如果大佬看完之后,发现这个文档里面有什么问题,或是有什么更好的建议,请在下方留言。谢谢! 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3